home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / INFO / INTER39B.ZIP / CMOS.LST next >
File List  |  1994-01-22  |  22KB  |  540 lines

  1.  
  2.               CMOS Memory Map v1.21 January, 1994
  3.  
  4. Compiled from multiple sources by Padgett Peterson
  5. Corrections/additions/comments to: padgett@tccslr.dnet.mmc.com
  6.  
  7. No guarantees of any kind.
  8.  
  9. Copyrights/Trademarks belong to whoever they may belong to.
  10.  
  11. Found: Algorithm used by IBM in calculating CRC checksums for PS/2
  12.        (see bytes 32h-33h). Complex (recursive part is 12 lines of
  13.        assembly) and not yet validated for every model.
  14.  
  15. Information Wanted: In calculating/writing information to the CMOS
  16.        in a PS/2, The IBM BIOS ORs the actual location with 80h (the 
  17.        floppy disk drive byte at 10h is addressed as 90h). Since the 
  18.        CMOS addresses wrap, this winds up at the same place (10h) on
  19.        all PS/2s checked thusfar. Anyone know why IBM does this ?
  20.       
  21.  
  22.             Background
  23.  
  24. The CMOS (complementary metal oxide semiconductor) memory is actually 
  25. a 64 or 128 byte battery-backed RAM memory module that is a part of the 
  26. system clock chip. Some IBM PS/2 models have the capability for a
  27. 2k (2048 byte) CMOS ROM Extension.
  28.  
  29. First used with clock-calender cards for the IBM PC-XT, when the PC/AT
  30. (Advanced Technology) was introduced in 1985, the Motorola MC146818 
  31. became a part of the motherboard. Since the clock only uses fourteen of 
  32. the RAM bytes, the rest are available for storing system configuration data.
  33.  
  34. Interestingly, the original IBM-PC/AT (Advanced Technology) standard for 
  35. the region 10h-3Fh is nearly universal with one notable exception: The 
  36. IBM PS/2 systems deviate considerably (Note: AMSTRAD 8086 machines were 
  37. among the first to actively use the CMOS memory available and since they 
  38. *predate* the AT, do not follow the AT standard).
  39.  
  40. This is just another example of how IBM created a standard, lost control 
  41. of it, tried to replace it, failed and lost market share in the process. 
  42.  
  43. Originally, the IBM PC/AT only made use of a small portion of CMOS memory
  44. and was defined in the IBM PC/AT Technical Reference Manual, specifically 
  45. bytes 10h, 12h, 14h-18h, 2Eh-33h. The balance was left undefined but was 
  46. quickly appropriated by various BIOS manufacturers for such user-selectable 
  47. options such as wait states, clock speeds, initial boot drive selection, and 
  48. password storage.
  49.  
  50. Later, as CMOS memory requirements grew, newer clock chips with 128
  51. bytes of RAM came into use. However the fact remains that once the AT 
  52. standard was established, only IBM has tried to change the definitions 
  53. of that first description.
  54.  
  55.             Accessing the CMOS
  56.  
  57. The CMOS memory exists outside of the normal address space and cannot
  58. contain directly executable code. It is reachable through IN and OUT
  59. commands at port number 70h (112d) and 71h (113d). To read a CMOS byte,
  60. an OUT to port 70h is executed with the address of the byte to be read and
  61. an IN from port 71h will then retrieve the requested information. The 
  62. following BASIC fragment will read 128 CMOS bytes and print them to the 
  63. screen in 8 rows of 16 values.
  64.  
  65. Note that if the CMOS only has 64 bytes available, addressing will 
  66. generally wrap and addresses from 40h-7Fh will mirror 00h-3Fh. Output will 
  67. be hexadecimal.
  68.  
  69. 10 CLS
  70. 20 FOR i = 0 TO &H7F 
  71. 30 OUT &H70, i
  72. 40 PRINT USING "\   \"; HEX$(INP(&H71));
  73. 50 NEXT i
  74. 60 PRINT " " 
  75.  
  76. Note: where not otherwise noted, all data points are expressed as BYTES
  77.       these are eight bit values and are read from MSB to LSB e.g.
  78.       0000 0000     0101 1010 binary would be written as 5Ah
  79.       7654 3210     where only some bits are used this is represented with
  80.                     Xs e.g bits 5-3 would be shown as 00xx x000
  81.  
  82.  
  83.         Organization of CMOS Memory - Clock
  84.  
  85. 00h-0Eh is defined by the clock hardware and all must follow it. Other 
  86. manufacturers generally follow the same format as specified for the
  87. region 10h - 2Fh. Some also follow the IBM format for 30h-33h but not all 
  88. (Zenith in particular is different).
  89.  
  90. The first fourteen bytes are dedicated to the MC146818 chip clock functions 
  91. and consist of ten read/write data registers and four status registers, two 
  92. of which are read/write and two of which are read only.
  93.  
  94. The format of the ten clock data registers (bytes 00h-09h) is:
  95.  
  96.  00h Seconds       (BCD 00-59, Hex 00-3B) Note: Bit 7 is read only      
  97.  01h Second Alarm  (BCD 00-59, Hex 00-3B)      
  98.  02h Minutes       (BCD 00-59, Hex 00-3B))         
  99.  03h Minute Alarm  (BCD 00-59, Hex 00-3B)       
  100.  04h Hours         (BCD 00-23, Hex 00-17 if 24 hr mode)
  101.                    (BCD 01-12, Hex 01-0C if 12 hr am)
  102.                    (BCD 81-92. Hex 81-8C if 12 hr pm)         
  103.  05h Hour Alarm    (same as hours)     
  104.  06h Day of Week   (01-07 Sunday=1)    
  105.  07h Date of Month (BCD 01-31, Hex 01-1F)    
  106.  08h Month         (BCD 01-12, Hex 01-0C)         
  107.  09h Year          (BCD 00-99, Hex 00-63)         
  108.  
  109. BCD/Hex selection depends on Bit 2 of register B (0Bh)
  110. 12/24 Hr selection depends on Bit 1 of register B (0Bh)
  111. Alarm will trigger when contents of all three Alarm byte registers
  112. match their companions.
  113.  
  114. The following is the on-chip status register information. 
  115.  
  116.  0Ah Status Register A (read/write) (usu 26h)
  117.   Bit 7     - (1) time update cycle in progress, data ouputs undefined 
  118.               (bit 7 is read only)
  119.   Bit 6,5,4 - 22 stage divider. 010b - 32.768 Khz time base (default)
  120.   Bit 3-0   - Rate selection bits for interrupt.
  121.               0000b - none
  122.               0011b - 122 microseconds (minimum)
  123.               1111b - 500 milliseconds  
  124.               0110b - 976.562 microseconds (default)
  125.  
  126.  0Bh Status Register B (read/write) 
  127.   Bit 7 - 1 enables cycle update, 0 disables
  128.   Bit 6 - 1 enables periodic interrupt
  129.   Bit 5 - 1 enables alarm interrupt
  130.   Bit 4 - 1 enables update-ended interrupt
  131.   Bit 3 - 1 enables square wave output
  132.   Bit 2 - Data Mode - 0: BCD, 1: Binary
  133.   Bit 1 - 24/12 hour selection - 1 enables 24 hour mode
  134.   Bit 0 - Daylight Savings Enable - 1 enables
  135.  
  136.  0Ch Status Register C (Read only)
  137.   Bit 7 - Interrupt request flag - 1 when any or all of bits 6-4 are
  138.           1 and appropriate enables (Register B) are set to 1. Generates
  139.           IRQ 8 when triggered.
  140.   Bit 6 - Periodic Interrupt flag
  141.   Bit 5 - Alarm Interrupt flag 
  142.   Bit 4 - Update-Ended Interrupt Flag
  143.   Bit 3-0 ???
  144.  
  145.  0Dh Status Register D (read only)
  146.   Bit 7 - Valid RAM - 1 indicates batery power good, 0 if dead or
  147.           disconnected.
  148.   Bit 6-0 ???
  149.  
  150.         Organization of CMOS Memory - non-Clock
  151.  
  152. The last two bytes in the first hexadecimal decade (hexade ?) were not 
  153. specified in the PC/AT but may have the following use on some systems:
  154.  
  155.  0Eh (PS/2) Diagnostic Status Byte 
  156.      Bit 7 - When set (1) indicates clock has lost power
  157.      Bit 6 - (1) indicates incorrect checksum
  158.      Bit 5 - (1) indicates that equipment configuration is incorrect
  159.                  power-on check requires that atleast one floppy be installed
  160.      Bit 4 - (1) indicates error in memory size
  161.      Bit 3 - (1) indicates that controller or disk drive failed initialization
  162.      Bit 2 - (1) indicates that time is invalid
  163.      Bit 1 - (1) indicates installed adaptors do not match configuration
  164.      Bit 0 - (1) indicates a time-out while reading adaptor ID
  165.  
  166.  0Eh (AMSTRAD) 6  BYTEs time and date machine last used
  167.  
  168.  0Fh Reset Code        
  169.      (IBM PS/2 "Shutdown Status Byte")
  170.  
  171. The second group of values extends from address 10h to 2Dh. The word at
  172. 2Eh-2Fh is a byte-wise summation of the values in these bytes. Most BIOSes
  173. will generate a CMOS Checksum error if this value is invalid however many 
  174. programs ignore the checksum and report the apparent value. The current
  175. version of MSD reports my XT as having 20+ MB of extended memory. 
  176.  
  177. Where a definiton appears universal, no identification is made. Where
  178. the definition is thought to be specific to a manufacturer/model (AMI, 
  179. AMSTRAD, IBM AT, IBM PS/2) the identification is enclosed in parens. The
  180. AMSTAD definitions appear to relate to 8088/8086 (PC and PC/XT class)
  181. mchines only. AT class machines appear to adhere to IBM PC/AT fornat.
  182.  
  183.  10h - Floppy Drive Type
  184.  
  185.   Bits 7-4 - First Floppy Disk Drive Type
  186.    0h      No Drive
  187.    1h      360 KB 5 1/4 Drive
  188.    2h      1.2 MB 5 1/4 Drive - note: not listed in PS/2 technical manual
  189.    3h      720 KB 3 1/2 Drive
  190.    4h     1.44 MB 3 1/2 Drive
  191.    5h-Fh  unused (??? 5h: 2.88 Mb 3 1/2 Drive ???)
  192.  
  193.    Bits 3-0 Second Floppy Disk Drive Type (bit settings same as A)
  194.  
  195.    Hence a PC having a 5 1/4 1.2 Mb A: drive and a 1.44 Mb B: drive will
  196.    have a value of 24h in byte 10h. With a single 1.44 drive: 40h.
  197.  
  198.  11h - (IBM-PS/2) First Fixed Disk Drive Type Byte (00-FFh) Note: if IBM
  199.    ESDI or SCSI drive controller is used, CMOS drive type will be zero (00 -
  200.    no drive) and Int 13h will be directed to controller ROM.
  201.  11h - (AMI) Keyboard Typematic Data 
  202.  
  203.   Bit 7 Enable Typematic (1 = On)
  204.  
  205.   Bits 6-5 Typematic Delay (wait before begin repeating)
  206.    00b 250 ms
  207.    01b 500 ms
  208.    10b 750 ms
  209.    11b 100 ms
  210.  
  211.   Bits 4-0 Typematic Rate char/sec e.g. 01010b = 12.0 cps
  212.    00000b - 300  01000b - 159  10000b - 75  11000b - 37
  213.    00001b - 267  01001b - 133  10001b - 67  11001b - 33
  214.    00010b - 240  01010b - 120  10010b - 60  11010b - 30
  215.    00011b - 218  01011b - 109  10011b - 55  11011b - 27
  216.    00100b - 200  01100b - 100  10100b - 50  11100b - 25
  217.    00101b - 185  01101b -  92  10101b - 46  11101b - 23
  218.    00110b - 171  01110b -  86  10110b - 43  11110b - 21
  219.    00111b - 160  01111b -  80  10111b - 40  11111b - 20
  220.  
  221.  12h - (IBM PS/2) Second Fixed Disk Drive Type (00-FFh) - see 11h
  222.  12h - Hard Disk Data
  223.   Bits 7-4 First Hard Disk Drive
  224.    00     No drive
  225.    01-0Eh Hard drive Type 1-14
  226.    0Fh    Hard Disk Type 16-255 (actual Hard Drive Type is in CMOS RAM 1Ah)
  227.   Bits 3-0 Second Hard Disk Drive Type (same as above except extrnded type
  228.           will be found in 1Bh).
  229.   A PC with a single type 2 (20 Mb ST-225) hard disk will have 20h in byte 12h
  230.   Note: some PCs utilizing external disk controller ROMs will use type 0 to
  231.    disable ROM BIOS (e.g. Zenith 248 with Plus HardCard).
  232.  
  233.  13h (AMI) Advanced Setup Options
  234.   Bit 7 Mouse Enabled (1 = On)
  235.   Bit 6 Test Memory above 1 MB (1 = On)
  236.   Bit 5 Memory Test Tick Sound (1 = On)
  237.   Bit 4 Memory Parity Error Check (1 = On)
  238.   Bit 3 Press <Esc> to Disable Memory Test (1 = On)
  239.   Bit 2 User-Defined Hard Disk (1 = Type 47 data area at address 0:300h)
  240.   Bit 1 Wait for <F1> Message if Error (1 = On)
  241.   Bit 0 Turn Num Lock On at boot (1 = On)
  242.  
  243.  14h - Equipment Byte 
  244.   Bits 7-6 Number of Floppy Drives (system must have at least one)
  245.    00b     1 Drive
  246.    01b     2 Drives
  247.    10b ??? 3 Drives
  248.    11b ??? 4 Drives
  249.   Bits 5-4 Monitor Type
  250.    00b Not CGA or MDA (observed for EGA & VGA)
  251.    01b 40x25 CGA
  252.    10b 80x25 CGA
  253.    11b MDA (Monochrome)
  254.   Bit 3 Display Enabled (1 = On)   (turned off to enable boot of rackmount)
  255.   Bit 2 Keyboard Enabled (1 = On)  (turned off to enable boot of rackmount)
  256.   Bit 1 Math coprocessor Installed (1 = On)
  257.   Bit 0 Floppy Drive Installed (1 = On) (turned off for rackmount boot)
  258.  
  259.  14h - (AMSTRAD)    BYTE user RAM checksum
  260.             LSB of sum of all user bytes should be AAh
  261.  
  262.  15h - Base Memory in K, Low Byte
  263.  15h - (AMSTRAD)    WORD Enter key scancode/ASCII code
  264.             default: 1C0Dh  - emulates Return key
  265.  
  266.  16h Base Memory in K, High Byte
  267.   The value in 15h-16h should be the same as in 0:413h and that returned by 
  268.   Int 12h. A PC having 640k (280h) of conventional memory will return 80h in 
  269.   byte 15h and 02h in byte 16h.
  270.  
  271.  17h - Extended Memory in K, Low Byte
  272.  17h - (AMSTRAD)    WORD Forward delete key scancode/ASCII code
  273.             default: 2207h  - emulates ^G (bell/beep)
  274.  
  275.  18h - Extended Memory in K, High Byte (some systems will only accommodate 
  276.   15 Mb extended or 16 Mb total) Format is the same as in 15h-16h
  277.  
  278.  19h - First Extended Hard Disk Drive Type (not in original AT
  279.   specification but now nearly universally used except for PS/2).
  280.   0-Fh unused (would not require extension. Note: this has the effect
  281.     making type 0Fh (15d) unavailable.
  282.   10h-FFh First Extended Hard Drive Type 16d-255d
  283.  
  284. For most manufacturers the last drive type (typically either 47d or 49d)
  285. is "user defined" and parameters are stored elsewhere in the CMOS.
  286.  
  287.  19h - (AMSTRAD)    WORD Joystick fire button 1 scancode/ASCII code
  288.             default: FFFFh  - (no translation)
  289.  
  290.  1Ah - Second Extended Hard Disk Drive Type (see 19h above)
  291.  
  292.  1Bh - (AMI) First Hard Disk (type 47) user defined: # of Cylinders, LSB
  293.  1Bh - (AMSTRAD)    WORD Joystick fire button 2 scancode/ASCII code
  294.             default: FFFFh  - (no translation)
  295.  1Bh - (PHOENIX) LSB of Word to 82335 RC1 roll compare register
  296.  
  297.  1Ch - (AMI) First Hard Disk user defined: # of Cylinders, High Byte
  298.  1Ch - (PHOENIX) MSB of Word to 82335 RC1 roll compare register
  299.  
  300.  1Dh - (AMI) First Hard Disk user defined: Number of Heads
  301.  1Dh - (AMSTRAD)    WORD mouse button 1 scancode/ASCII code
  302.             default: FFFFh  - (no translation)
  303.  1Dh - (Zenith Z-200 monitor) Boot Drive Selection
  304.        Bits 6-5 (0xx0 0000)
  305.        00 - MFM Monitor
  306.        01 - First floppy drive (A:)
  307.        10 - First fixed disk (C:)
  308.        11 - First floppy drive (A:). If not there then First fixed disk (C:)
  309.             (this is the default).
  310.  1Dh - (PHOENIX) LSB of Word to 82335 RC2 roll compare register
  311.  
  312.  1Eh - (AMI) First Hard Disk user defined: Write Precompensation Cylinder, 
  313.        Low Byte
  314.  1Eh - (PHOENIX) MSB of Word to 82335 RC2 roll compare register
  315.  
  316.  1Fh - (AMI) First Hard Disk user defined: Write Precompensation Cylinder, 
  317.        High Byte
  318.  1Fh - (AMSTRAD)    WORD mouse button 2 scancode/ASCII code
  319.             default: FFFFh  - (no translation)
  320.  
  321.  20h - (AMI) First Hard Disk user defined: Control Byte (80h if # of heads 
  322.        is equal or greater than 8)
  323.  20h - (PHOENIX) First user defined hard disk (type 48) Cylinders LSB
  324.  
  325.  21h - (AMI) First Hard Disk user defined: Landing Zone, Low Byte
  326.  21h - (AMSTRAD) BYTE mouse X scaling factor, default: 0Ah
  327.  21h - (PHOENIX) First user defined hard disk (type 48) Cylinders MSB
  328.  
  329.  
  330.  22h - (AMI) First Hard Disk user defined: Landing Zone, High Byte
  331.  22h - (AMSTRAD) BYTE mouse Y scaling factor default: 0Ah
  332.  22h - (PHOENIX) First user defined hard disk (type 48)  of Heads
  333.  
  334.  23h - (AMI) First Hard Disk user defined: # of Sectors per track
  335.  23h - (AMSTRAD) BYTE initial VDU mode and drive count  default: 20h
  336.     bit 7:  enables extended serial flow control
  337.             (NB this is buggy)
  338.     bit 6:  set if two floppy drives installed
  339.     bits 5 & 4: (from Amstrad 1640 tech ref)
  340.          0   0      Internal video adapter
  341.          0   1      CGA card added; 40 x 25 mode
  342.          1   0      CGA card added; 80 x 25 mode
  343.          1   1      mono card added; 80 x 25 mode
  344.  23h - (PHOENIX) First user defined hard disk (type 48) Write Precomp. LSB
  345.  
  346.  24h - (AMI) Second Hard Disk user defined: # of Cylinders, Low Byte
  347.  24h - (AMSTRAD)    BYTE initial VDU character attribute, default: 7h
  348.  24h - (PHOENIX) First user defined hard disk (type 48) Write Precomp. MSB
  349.  
  350.  
  351.  25h - (AMI) Second Hard Disk user defined: # of Cylinders, High Byte
  352.  25h - (AMSTRAD)    BYTE size of RAM disk in 2K blocks
  353.         default: 0  - only used by the RAMDISK software supplied.
  354.  25h - (PHOENIX) First user defined hard disk (type 48) Parking zone LSB
  355.  
  356.  
  357.  26h - (AMI) Second Hard Disk user defined: Number of Heads
  358.  26h - (AMSTRAD)    BYTE initial system UART setup byte
  359.             default: E3h - format as for Int 14h fn 0
  360.  26h - (PHOENIX) First user defined hard disk (type 48) Parking zone MSB
  361.  
  362.  27h - (AMI) Second Hard Disk user defined: Write Precompensation Cylinder, 
  363.        Low Byte
  364.  27h - (AMSTRAD)    BYTE initial external UART setup byte
  365.             default: E3h - format as for Int 14h fn 0
  366.  27h - (PHOENIX) First user defined hard disk (type 48) Sectors per track
  367.  
  368.  28h - (AMI) Second Hard Disk user defined: Write Precompensation Cylinder, 
  369.        High Byte
  370.  28h - (HP Vectra) checksum over words 29h-2Dh
  371.  
  372.  28h-3Fh (AMSTRAD) 24 BYTEs user applications default: zeroes
  373.  
  374.  
  375.  29h - (AMI) Second Hard Disk user defined: Control Byte (80h if # of heads 
  376.        is equal or greater than 8)
  377.  29h - (PHOENIX) LSB word to Intel 82335 CC0 compare register
  378.  
  379.  2Ah - (AMI) Second Hard Disk user defined: Landing Zone, Low Byte
  380.  2Ah - (PHOENIX) MSB word to Intel 82335 CC0 compare register
  381.  
  382.  2Bh - (AMI) Second Hard Disk user defined: Landing Zone, High Byte
  383.  2Bh - (PHOENIX) LSB word to Intel 82335 CC1 compare register
  384.  
  385.  2Ch - (AMI) Second Hard Disk user defined: # of Sectors per track
  386.  2Ch - (COMPAQ) bit 6:  0 - numlock OFF on boot, 1 - numlock ON at boot
  387.  29h - (PHOENIX) MSB word to Intel 82335 CC1 compare register
  388.  
  389.  2Dh - (AMI) Configuration Options 
  390.   Bit 7 Weitek Installed(1 = On)
  391.   Bit 6 Floppy Drive Seek - turn off for fast boot
  392.   Bit 5 Boot Order 0 - Drive C:, then A:
  393.                    1 - Drive A:, then C:
  394.   Bit 4 Boot Speed (0 - Low; 1 - High)
  395.   Bit 3 External Cache Enable (1 = On)
  396.   Bit 2 Internal Cache Enable (1 = On)
  397.   Bit 1 Use Fast Gate A20 after boot (1 = On)
  398.   Bit 0 Turbo Switch (1 = On)
  399.  2Dh - (PHOENIX) Checks for values AAh or CCh
  400.   
  401.  2Eh - Standard CMOS Checksum, High Byte
  402.  2Fh - Standard CMOS Checksum, Low Byte
  403.  
  404.  2Eh and 2Fh are as defined by the original IBM PC/AT specification and
  405.  represent a byte-wise additive sum of the values in locations 10h-2Dh only,
  406.  00h-0Fh and 30h-33h are not included. This definition is used by most
  407.  clone manufacturers including AMI, Compaq, Tandon, NEC, and Zenith. The 
  408.  IBM PS/2 line does not follow this standard with the range 19h-31h being 
  409.  undefined.
  410.  
  411.  30h - Extended Memory in K, Low Byte
  412.  
  413.  31h - Extended Memory in K, High Byte 
  414.  (??? this appears to mirror the value in bytes 17h-18h.) 
  415.  
  416.  32h - Century Byte (BCD value for the century - currently 19)
  417.  32h - (IBM-PS2) Configuration CRC low byte. CRC for range 10h-31h
  418.  
  419.  33h - Information Flag
  420.   Bit 7 128K (??? believe this indicates the presence of the special 128k
  421.               memory expansion board for the AT to boost the "stock" 512k
  422.               to 640k - all machines surveyed have this bit set)
  423.   Bits 6-0 ???
  424.  33h - (IBM PS/2) Configuration CRC high byte (see entry for 32h)
  425.  33h - (PHOENIX) Bit 4 (000x 0000) bit 4 from Intel CPU register CP0
  426.  
  427.  34h - (AMI) Shadowing & Boot Password
  428.   Bits 7-6 Password Selection
  429.    00b Disable 10b Reserved
  430.    01b Set     11b Boot
  431.   Bit 5 C8000h Shadow ROM (Bit 1 = On) 
  432.   Bit 4 CC000h Shadow ROM (Bit 1 = On)
  433.   Bit 3 D0000h Shadow ROM (Bit 1 = On)
  434.   Bit 2 D4000h Shadow ROM (Bit 1 = On)
  435.   Bit 1 D8000h Shadow ROM (Bit 1 = On)
  436.   Bit 0 DC000h Shadow ROM (Bit 1 = On)
  437.  
  438.  35h - (AMI) Shadowing
  439.   Bit 7 E0000h Shadow ROM (Bit 1 = On)
  440.   Bit 6 E4000h Shadow ROM (Bit 1 = On)
  441.   Bit 5 E8000h Shadow ROM (Bit 1 = On)
  442.   Bit 4 EC000h Shadow ROM (Bit 1 = On)
  443.   Bit 3 F0000h Shadow ROM (Bit 1 = On)
  444.   Bit 2 C0000h Shadow ROM (Bit 1 = On)
  445.   Bit 1 C4000h Shadow ROM (Bit 1 = On)
  446.   Bit 0 Reserved
  447.  35h - (PHOENIX) Second user defined hard disk (type 48) Cylinders LSB
  448.        NOTE: used only when PS/2 style password is NOT in effect.
  449.  
  450.  36h - (PHOENIX) Second user defined hard disk (type 48) Cylinders MSB
  451.        NOTE: used only when PS/2 style password is NOT in effect.
  452.  
  453.  37h - (IBM PS/2) Date Century Byte 
  454.  37h - (PHOENIX) Second user defined hard disk (type 48) # of heads
  455.        NOTE: used only when PS/2 style password is NOT in effect.
  456.  
  457.  38h-3Dh (AMI) Encrypted Password
  458.  
  459.  38h-3Fh ??? (IBM PS/2) Encrypted Password. Initialized to 00h in all
  460.      bytes. Will accept from 1-7 scan codes. 
  461.  
  462.  38h - (PHOENIX) Second user defined hard disk (type 48) Write Precomp. LSB
  463.        NOTE: used only when PS/2 style password is NOT in effect.
  464.  
  465.  39h - (PHOENIX) Second user defined hard disk (type 48) Write Precomp. MSB
  466.        NOTE: used only when PS/2 style password is NOT in effect.
  467.  
  468.  3Ah - (PHOENIX) Second user defined hard disk (type 48) Parking Zone LSB
  469.        NOTE: used only when PS/2 style password is NOT in effect.
  470.  
  471.  3Bh - (PHOENIX) Second user defined hard disk (type 48) Parking Zone MSB
  472.        NOTE: used only when PS/2 style password is NOT in effect.
  473.  
  474.  3Ch - (PHOENIX) Second user defined hard disk (type 48) Sectors per track
  475.        NOTE: used only when PS/2 style password is NOT in effect.
  476.  
  477.  3Eh - (AMI) Extended CMOS Checksum, High Byte (includes 34h - 3Dh)
  478.  
  479.  3Fh - (AMI) Extended CMOS Checksum, Low Byte (includes 34h - 3Dh)
  480.  
  481.  End of original 64 CMOS RAM bytes. Many modern chips now contain 128
  482.  bytes and the IBM PS/2 has provision for 2k of "Expansion CMOS". 
  483.  The AMI HI-FLEX description is below. If the chip does have only
  484.  64 bytes, addresses will wrap so that requests for bytes 40h-7Fh will 
  485.  return the same values as 00h-3Fh.
  486.  
  487.  40h ???
  488.  
  489.  41h - (AMI)
  490.   Bits 7-6 IOR/IOW Wait states
  491.   Bits 5-4 16-bit DMA Wait States
  492.   Bits 3-2  8-bit DMA Wait States
  493.   Bit 1    EMR bit
  494.   Bit 0    DMA Clock Source
  495.  
  496.  42h-43h ???
  497.  
  498.  44h - (AMI)
  499.   Bit 4 NMI Power Fail Warning
  500.   Bit 3 NMI Local Bus Timeout
  501.  
  502.  45h - (AMI) 
  503.   Bits 7-6 AT Bus 32-Bit Delay
  504.   Bits 5-4 AT Bus 16-Bit Delay
  505.   Bits 3-2 AT Bus 8-Bit Delay
  506.   Bits 1-0 AT Bus I/O Delay
  507.  
  508.  46h - (AMI)
  509.   Bits 7-6 AT Bus 32 Bit Wait States
  510.   Bits 5-4 AT Bus 16 Bit Wait States
  511.   Bits 3-2 AT Bus  8 Bit Wait States
  512.   Bits 1-0 AT Bus Clock Source
  513.  
  514.  47h - 50h ???
  515.  
  516.  51h - (AMI)
  517.   Bit 7    Bank 0/1 RAS Precharge
  518.   Bit 6    Bank 0/1 Access Wait States
  519.   Bits 3-2 Bank 0/1 Wait States
  520.  
  521.  52h ???
  522.  
  523.  53h - (AMI)
  524.   Bit 7    Bank 2/3 RAS Precharge
  525.   Bit 6    Bank 2/3 Access Wait States
  526.   Bits 3-2 Bank 2/3 Wait States
  527.  
  528.  54h-7Fh ???
  529.  
  530.  
  531. Revision History
  532.  
  533. v1.21   Jan,  1994      Added note for PS/2 checksum found
  534. v1.20    Sept, 1993      PHOENIX data from Wim Osterholt added
  535.                         additional AMI data from Howie (hjh@gwd.dst.gov.au)
  536. v1.15   June, 1993      AMSTRAD data updated
  537. v1.1     June, 1993    AMSTRAD & PS/2 data added 
  538. v1.0    June, 1993    First release: Motorola MC 146818,  PC-AT & AMI 
  539.                         "Hi-Flex" information baselined
  540.